Transport Layer Security
略 : TLS
関連
TLS ハンドシェイクの基本原理
TLS に関する標準
RFC 8446 より
TLS の主な目標は、通信する 2 つのピア間に安全なチャネルを提供すること
TLS を使用することで、クライアント/サーバーアプリケーションは、インターネットを介した通信にあたって以下を防ぐことができる
盗聴 (eavesdropping)
改ざん (tampering)
メッセージの偽造 (message forgery)
TLS の主要な部分は次の 2 つ
ハンドシェイクプロトコル (handshake protocol)
レコードプロトコル (record protocol) : 通信するピア間のトラフィックを保護する
全ての TLS バージョンには、クライアントとサーバーの両方が利用可能なバージョンを相互に利用できるようにするネゴシエーションの仕組みが組み込まれている
from ゼロトラストネットワーク ―― 境界防御の限界を超えるためのセキュアなシステム設計
TLS の暗号スイートは、次の 4 つの主要なコンポーネントで構成
鍵交換 → TLS の鍵交換 / 共有プロトコル
認証 → TLS の認証プロトコル
バルク暗号化 → TLS のバルク暗号化アルゴリズム
nobuoka.icon ハンドシェイクで生成した共有鍵を使って暗号化することをバルク暗号化と言うっぽい?
メッセージ認証
メッセージの真正性は重要 (真正性がなければ完全性をどう保証する?)
nobuoka.icon これはメッセージ認証の話?
AES-GCM などの暗号モードでは、メッセージの機密性と真正性が同時に保証される
ただし、バルク暗号化だけ (バルク転送仕様で保護されない TLS 交換はいくつもある)
TLS 1.3 では認証付きの暗号の使用が義務付けられている
メッセージの真正性を確認すれば良い
選択肢は MD5 か SHA だが、MD5 はかなり前に暗号が破られているため、合理的な選択肢は SHA ファミリのみ
TLS はプロトコルに依存 : ほとんどは TCP ベース。 DTLS という UDP ベースのものもある